import math


def get_distance(pos_a, pos_b):
    """Return the distance between two translate points.

    Args:
        pos_a (list): The first translate point [x_value, y_value, z_value].
        pos_b (list): The second translate point [x_value, y_value, z_value].

    Returns:
        float: The distance between two translate points.

    """

    return math.sqrt(
        math.pow(pos_a[0] - pos_b[0], 2) + math.pow(pos_a[1] - pos_b[1], 2) + math.pow(pos_a[2] - pos_b[2], 2)
    )


def smooth_step(value, range_start=0.0, range_end=1.0, smooth=1.0):
    """Interpolate between 2 float values using hermite interpolation.

    Args:
        value (float): Value to smooth
        range_start (float): Minimum value of interpolation range.
        range_end (float): Maximum value of interpolation range.
        smooth (float): Strength of the smooth applied to the value.

    Returns:
        float: The smoothed value.

    """

    # Get range
    range_val = range_end - range_start
    # Normalize value
    n_value = value / range_val
    # Get smooth value
    s_value = math.pow(n_value, 2) * (3 - (n_value * 2))
    s_value = n_value + ((s_value - n_value) * smooth)
    value = range_start + (range_val * s_value)
    # Return result
    return value
